ии я очень сложный замутил 4х ступенчатый (не для босов)так как при строительстве его я думал что движок будет пулять спеллы,его придёться переписывать,но я нашел решение если за моба стоит комп то спелы во вкладке нейтрально посивные он будет юзать но не все главное условие чтобы был комп назначен
Такой стандартной способности нет, которую ты хочешь. Её можно лишь сделать путём канального заклятию со щепоткой JASS'а. По другому никак, если только Blizzard Ent. не запилят такую способность, или что-то намудрят с каналом, что вряд-ли будет.
Короче порылся в ХГМ, потыкал, все испробывал, и сам нашел ответ, вот несколько моментов для того, чтобы заработал:
Требуется установленный Warcraft 3: The Frozen Throne последней версии 1.26a. Скачайте нормальный варкрафт 3, а то попадаются урезанные или нерабочие версии. Лучше оригинальную версии приобрести, и обновить. Хотя пиратки тоже неплохи. Вот использую сборкой от R.G. Mechanics
Путь к программе НЕ ДОЛЖЕН содержать русских символов
Совершайте установку в отдельную от Warcraft 3 папку
Рекомендуется приостановить антивирусные программы до установки, потом выполнить установку, затем добавить папку c JNGP в исключения, и потом только снова включить антивирусы. Эта программа вторгается в процесс worldedit.exe, поэтому может считаться вредоносной
Не трогайте файл worldedit121.exe, он должен быть и в папке игры и в папке JNGP
Сначала "Сохранить карту", только потом "Проверка карты", а ещё иногда бывает лучше сохранять пару раз
Выше, это стандартное описание для работы. Если не сработает, пробуем вот, что:
Выставляем оптимальные настройки к JNGP, указанные на скрине (см. ссылку) xgm.guru/forum/showthread.php?t=13118 Обычно, эти настройки должны быть изначально после установки JNGP (ну мало ли пригодятся)
Теперь суть моей проблемы (не знаю, что из этих ниже пунктов сработало, но сработало):
Я установил игру и JNGP на рабочий стол. Потому что на диске С, в папках типа Program Files.(x86) и др. блокирует браундмер. Обычно требует назойливо для работы права администратора, очень раздражает. Но сомневаюсь, что заработало из-за этого. Раньше не мешало нисколько.
Запустить JNGP в режим совместимости. Заходим в свойство exe-шника. Поставил семерку.
Если UMS изначально включен, то выключить его и включить (Enable UMS). Потом перезапустить WE. Скорее всего из-за него.
Из-за UMS также бывают ошибки: могут выскачить 2-3 окна : что отсутствует TriggerClearActions и layerAll. Когда пропускаешь эти окна, просто нажав на ок, затем появляется ошибка с памятью и уже потом закрывается редактор. Происходят такие ошибки, если пытаешься открыть обычным редактором карту, отредактированную в JNGP. Такая ошибка происходит, если некорректно настроен UMS (выкл. потом вкл.). Такая ошибка происходит, если открыть обычным редактором взломанную карту, которая наверняка сделана в UMS и использует необычный jass и прочие преимущества JNGP. Ошибки с UMS могут иногда происходить, поэтому скорее всего пункт 10 поможет
Если UMS перестает работать (некорректно работает), а 10 пункт не помогает. То есть плагин UMS по каким-то причинам не запускается, а JNGP стоит галочка напротив UMS (говорит, что включен). Короче узнать, что он запущен, можно при открытий редактора вместо стандартного окна выскакивает окно UMS. Если не выскакивает, надо попробовать завести снова работать. Плагин может по каким-то причинам сломаться (один раз баловался в настройках JNGP). Пробуйте потом удалить JNGP и потом заново переустановить. Или выкл. и вкл, UMS затем выйти из jngp, удалить и заново переустановить
Параметры стака ядов с одним и тем же баффом, это нужно чтобы складывались замедлени и\или урон от разных юнитов, или бафф тупо обновлялся.
С одним из параметров яды с разными баффами скатаются независимо, каждый вешает свой бафф. (годная основа для замедляющих способностей)
А игра вылетает из за зацикливания, темболее бафф при удалении и появлении наносит 0.00 ед урона, это так для справки.
А что не понятного? Крашится при уничтожении базы красного, значит перелопать код, который отсится к базе или вообще к красному игроку хоть как-то. Что сложного то?
PyCCKuu_4eJl, а причем тут аура торнадо? Если стан это стан, особый флаг + приказ смотреть на источник стана.
Не пойму почему не молоток бурь а аура торнадо?
GetLocalPlayer, Нет, на гуях мемхака, вовсе исключён...
Так же мемхак нужно еще заставить работать, если ваши познания jass ниже среднего, а так же вам лень читать статьи по 10 страниц - эта наработка явно не для вас.
Дальше пришла в голову другая идея. Думаю, можно сделать с помощью ремонта зданий Альянса: на месте смерти героя создаётся здание с моделью креста со здоровьем 1/100 ед., а союзные герои ремонтируя крест будут повышать её здоровье, получается некая иллюзия прогресс бара. И если спрятать способность ремонта с помощью функции HideAbilityButton( ) из мемхака, то будет ли она срабатывать при нажатии на ПКМ? Также, как отловить момент полного ремонта здания? С помощью таймера проверять процент здоровья каждые доли секунды?
раскрыть
scope HeroRevive initializer Initialization
struct herorevive
private unit dyingUnit
private unit reincarnate
private real life
private thistype prev
private thistype next
public static constant trigger trig = CreateTrigger( )
public static constant timer period = CreateTimer( )
private static method iterate takes nothing returns nothing
local thistype this = thistype( 0 ).next
loop
exitwhen ( this == 0 )
if ( GetWidgetLife( this.reincarnate ) > this.life ) then
set this.life = GetWidgetLife( this.reincarnate )
elseif ( GetWidgetLife( this.reincarnate ) >= GetUnitState( this.reincarnate, UNIT_STATE_MAX_LIFE ) ) then
call ReviveHero( this.dyingUnit, GetUnitX( this.dyingUnit ), GetUnitY( this.dyingUnit ), true )
call RemoveUnit( this.reincarnate )
set this.reincarnate = null
set this.life = 0.0
set this.prev.next = this.next
set this.next.prev = this.prev
if ( thistype( 0 ).next == 0 ) then
call PauseTimer( thistype.period )
endif
call thistype.deallocate( this )
elseif ( GetWidgetLife( this.reincarnate ) <= this.life ) then
set this.life = 1.0
call SetWidgetLife( this.reincarnate, this.life )
endif
set this = this.next
endloop
endmethod
public static method actions takes nothing returns nothing
local thistype this = thistype.allocate( )
set this.next = 0
set this.prev = thistype( 0 ).prev
set this.next.prev = this
set this.prev.next = this
set this.dyingUnit = GetDyingUnit( )
set this.reincarnate = CreateUnit( GetOwningPlayer( this.dyingUnit ), 'h003', GetUnitX( this.dyingUnit ), GetUnitY( this.dyingUnit ), 0.0 )
set this.life = 1.0
call SetUnitPathing( this.reincarnate, false )
call SetWidgetLife( this.reincarnate, this.life )
if ( this.prev == 0 ) then
call TimerStart( thistype.period, 0.10, true, function thistype.iterate )
endif
endmethod
public static constant method conditions takes nothing returns boolean
return IsUnitType( GetDyingUnit( ), UNIT_TYPE_HERO )
endmethod
endstruct
public function Initialization takes nothing returns nothing
call TriggerRegisterPlayerUnitEvent( herorevive.trig, Player( 1 ), EVENT_PLAYER_UNIT_DEATH, null )
call TriggerRegisterPlayerUnitEvent( herorevive.trig, Player( 2 ), EVENT_PLAYER_UNIT_DEATH, null )
call TriggerRegisterPlayerUnitEvent( herorevive.trig, Player( 3 ), EVENT_PLAYER_UNIT_DEATH, null )
call TriggerRegisterPlayerUnitEvent( herorevive.trig, Player( 4 ), EVENT_PLAYER_UNIT_DEATH, null )
call TriggerAddCondition( herorevive.trig, Condition( function herorevive.conditions ) )
call TriggerAddAction( herorevive.trig, function herorevive.actions )
endfunction
endscope
Вот только если спрятать кнопку через HideAbilityButton( ), то способность ремонта зданий исчезает и не работает через ПКМ.
Разумеется можно, но лишь те у которых есть кулдаун индикатор, это перерождение и вроде абилка труповозки "эксгумация".
Так же желательно юзать новую функцию запуска в кд, некоторые абилки у меня баговали, целая тема была про это.
глобалки создаются вне функций, что в GUI невозможно. И глобалки, созданные таким образом, не отображаются в GUI
лучше вместо
set u = GetLastCreatedUnit()
писать
set u = bj_lastCreatedUnit
bj_lastCreatedUnit - глобальная переменная
никакого округления! при конвертации просто откидывается дробная часть. Если нужно округление, просто добавь к числу 0.5, а затем переводи в целочисленные
тут два способа
или иметь базу данных - бд - со всеми юнитами, их базовой атакой, статами, которые эту атаку уведичивают, книгами и кол-вом их применения, и всем прочим
от этой бд уже и пясать
или же в мемхак, считать значение, плясать от него
darkowlom, ну я сабжом расставил нужные текстуры. Из всего что пора пришло в голову только использовать триггер "Окружение" и в нужных местах областями ставить текстуры. Но это как муторно.. Вот и решил спросить можно ли обойти ограничения.
Это делается функциями GetTerrainType и SetTerrainType.
Рисуешь на тех же самых текстурах определенную допустим квадратную локацию.
Затем for стартовоеX до конечноеX внутри for СтартовоеY до КонечноеY если getterraintype = точтонадозаменить то setterraintype на другую текстуру.
Других адекватных методов нет. Триггер который ты привел использует локации (точки), а значит - это возня с точками - возможно утечки.
Я используя эти функ целиком всю карту стираю размера 256x256 и отрисовываю 10к тайлов, в одном проекте). Лаг если и есть во время перерисовки - то незаметный, не больше 0.5сек
Ну насчет первых двух вопросов не знаю. Не супер-пупер картодел. Но с последним - скачай вот это: xgm.guru/p/wc3/jassnewgenpack-exp это расширенный редактор, там можно и карту гиганта сделать и текстур добавить больше чем возможно, по моему до 16 штук, да и еще много чего, включая выключение огранки на декор и т.д. Когда запустиш через эту програмку редактор - появиться в верху дополнительные кнопочки. Нажимаеш на Extensions и в менюшке - Edit Tileset. И выбирай до 16 любых текстур... Вплоть до полной замены всех текстур карты. ..
Не важно, как будет называться кость. Главное, чтобы к ней были прикреплены все вершиныы.
Иногда встречаются модели и без костей вовсе, но они могут неправильно отображаться в самой игре или редакторе, так что лучше все же создать косточку)
Я тебе вот что скажу... Играю в Варик с 2006 года.
Короче ща перешёл в Гарену из-за того, что батл нете нельзя нормально хостить карту (там одни боты).
В общем: народу в гарене полно(комнаты почти всегда забыты по максимому). И что странно - половина из игроков - школьники... Откуда столько много школьников мне не понятно.
Но одно могу сказать точно - в Варик 3 играет больше народу, чем в Старкрафт 2. И будут играть ещё долго.
А я думал, что к 2010 году в варике 3 ТОЧНО никого не останется... Оказывается я жестко ошибался)
Что такое "назначить пользовательский параметр юнита или предмета" и как им пользоваться?
Используется для сохранения каких-нибудь своих данных в этот конкретный предмет или юнита
Добрые люди, как присвоить глобальной переменной (целочисленной) цену определенного предмета (так чтобы если изменить цену в редакторе объектов, то в редакторе триггеров она сама изменялась) или какая главная характеристика определенного героя (разум, сила, ловкость).
AntiMage, айсфрог больше не фаворит, не?
Создай их на карте изначально, потом удали при старте удали, время загрузки карты увеличится, зато не будет просадок фпс при выборе нового героя и так далее. Способности прелоадят с помощью preload, постепенно, как только появился герой которому нужны эти способности, то потихонечку подгружаются эффекты скиллов, создаются даммики которым по очереди с некоторым интервалов вручают по 1 скиллу героя + так же все вспомогательные дамми способности.
Fakov, насчёт фризов... Имеются ввиду фризы во время загрузки карты или же непосредственно в ходе игры? А нюансы, например, какие? Сама по себе система работает, главное, чтоб не фризило-крашило.
от большого кол-ва забитых массивов не должно лагать, т.к по сравнению с реальной нагрузкой - это копейки Свиборг:
UrsaBoss, я все эти переменные делал на гуи, не на жассе.
и учти, тебе придется сделать отдельный поток для инициализации твоих массивов, это чтобы исключить вероятность того, что завершится поток main из за лимита операций
Вот инструкция если ты не шаришь в jass:
На скриншоте 1, там где
call ExecuteFunc("Trig_MyTrig_Actions")
Это Custom Script, а MyTrig - это название нужного тебе триггера
На скриншоте 2 уже твой триггер с инициализацией массива, главное в событиях ничего не ставь
Чем вас не устраивает стандартная система здоровья и урона?
yep, зачем изобретать то что уже есть. Отнимай просто здоровье из реального здоровья, а считай урон из реального урона юнита. Все это сможешь настроить в РО, и легко использовать, не нужно никаких переменных и триггеров.
Тем не менее то что ты хочешь вполне легко сделать, создаешь массив такого вида:
UnitParams [ unitIndex ] [ paramName ]
в unitIndex будет число соответствующие id юнита на карте. Не помню, но вроде там даже функция есть что бы его получить. Если нет, то придется еще один массив делать, и вручную каталогизировать все юниты.
Units [ UniqueUnitLink ] = 001
Units [ UniqueUnitLink ] = 002
Пример:
Units [ __Морпех (25,19)__ ] = 1
Units [ __Гидралиск (4,25)__ ] = 2
..
Затем событие Юнит атакован или любое другое. Подставляешь Triggering Unit в твой массив Units и получаешь его id (согласно твоему каталогу), а уже используя этот id можешь из первого массива достать или изменить любой параметр. А если id не нужны, то просто храни ссылки на объекты в массиве параметров. Или используй custom value. Но лучше всего стандартные здоровье и атаку.
Ну и да, собственно, не понимаю я что мешает просто брать HP юнита напрямую вместо того чтобы записывать каждое изменение в переменную?
Я пытался так сделать изначально, но не смог, пришлось обходными путями идти.
Вот строка:
libNtve_gf_CreateDialogItemLabel(DialogLastCreated(), 200, 100, c_anchorCenter, 0, 0, StringExternal("Param/Value/740E5475"), ColorWithAlpha(0,0,0,0), false, 2.0);
Так же мелькала 1017 строка:
gv_hPJangles += EventUnitPropertyChangeInt();
И, чего дальше? Я в этом мало чего понимаю. Но это строки из другого триггера, который отвечает за конкретного юнита. prog, работает! Это был конфликт между двумя триггерами (тем, который я выложил, и тем, который я упомянул выше). После установки во втором триггере условия, чтоб не срабатывал, когда не надо (он на конкретного юнита забит, а юнита на момент срабатывания в переменной нет).
Короче, УРА!
Но ведь сами по себе ошибки не происходят.
Причина подобного это А) - невнимательность либо твоя либо автора В) - программное обеспечение
Что бы в дальнейшем все было окей, просто сначала потести карту полностью что бы знать что и как должно быть, а потом вноси изменения, будь внимательней.
Еще советую связаться с автором и поговорить с ним об этой проблеме, или запросить у него еще 1 исходник да бы сверЯться с ним.
pro100master, По логике, должно быть так, задание по оформлению главной страницы проекта я выполнил, надо его принять, дать мне второй уровень, и смогу добавлять ресурсы в проект и начну набивать их контентом, наконец. Чего я жду уже - две недели.
Всё, вопрос закрыт, работы на сайте снова начались.
должен сразу предупредить что делать за тебя никто не будет
теперь по твоим вопросам
чтобы нельзя было кликать скрываешь, даёшь москиты, делаешь видимым
действие проиграть звук и указываешь твою фразу
выбираем всех подходящих(враги,живые) юнитов в радиусе от точки каста и создаём по дамми юниту(юнит без модели, без атаки, с москитами, с нужной способность, время жизни юнита 1 сек) для каждого подходящего юнита приказывая дамми юниту применить нужную способность в подходящего юнита
таким образом каждый дамми юнит применит нужную способность (в твоём случае корни) в 1 подходящего юнита для которого он и был создан а потом исчезнет
Потому что вы блокируете мультишот. Запрет спеллбука не запрещает способности, находящиеся в нем. Но запрет самих способностей, внезапно, запрещает их.
должен сразу предупредить что делать за тебя никто не будет
теперь по твоим вопросам
чтобы нельзя было кликать скрываешь, даёшь москиты, делаешь видимым
действие проиграть звук и указываешь твою фразу
выбираем всех подходящих(враги,живые) юнитов в радиусе от точки каста и создаём по дамми юниту(юнит без модели, без атаки, с москитами, с нужной способность, время жизни юнита 1 сек) для каждого подходящего юнита приказывая дамми юниту применить нужную способность в подходящего юнита
таким образом каждый дамми юнит применит нужную способность (в твоём случае корни) в 1 подходящего юнита для которого он и был создан а потом исчезнет
Потому что вы блокируете мультишот. Запрет спеллбука не запрещает способности, находящиеся в нем. Но запрет самих способностей, внезапно, запрещает их.
должен сразу предупредить что делать за тебя никто не будет
теперь по твоим вопросам
чтобы нельзя было кликать скрываешь, даёшь москиты, делаешь видимым
действие проиграть звук и указываешь твою фразу
выбираем всех подходящих(враги,живые) юнитов в радиусе от точки каста и создаём по дамми юниту(юнит без модели, без атаки, с москитами, с нужной способность, время жизни юнита 1 сек) для каждого подходящего юнита приказывая дамми юниту применить нужную способность в подходящего юнита
таким образом каждый дамми юнит применит нужную способность (в твоём случае корни) в 1 подходящего юнита для которого он и был создан а потом исчезнет
Если во всех картах одинаковый id, значит покопайся в хеше.
Это как, можно в личку?
Проблему решил, переделав стандартную способность, а не создавая нестандартную. Это почти что панацея от подобных случаев, когда id (ещё называют raw-code) способности меняется.
Анимация текстуры. Через сдвиг или замену. Максимум, какую текстуру тянет Вар - 512 на 512. Чтобы не потерять в качестве, сделай несколько таких текстур и меняй их в нужных кадрах в настройке материала.
можно либо заменять юнита, либо химичить с тексттагами(то есть сделать систему имен игровых обьектов на тексттагах), ещё есть функция для смены имени игрока
код
native SetPlayerName takes player whichPlayer, string name returns nothing
предметам имена изменять нельзя
способности могут быть с таким же успехом удалены, добавлены
этим
native UnitAddAbility takes unit whichUnit, integer abilityId returns boolean
native UnitRemoveAbility takes unit whichUnit, integer abilityId returns boolean
подробнее насчет предметов, думаю можно похимичить с кастом велью, устанавливать его
native S2I takes string s returns integer
native I2S takes integer i returns string
конвертировать, потом выводить строки на экран через
это
native DisplayTextToPlayer takes player toPlayer, real x, real y, string message returns nothing
с таким же успехом можно использовать хеш-таблицы, для аттача описания к чему-либо.
Ещё есть вариант, с описанием предметов и способностей в квестах.
В общем без гемора, и написания левых систем никак)
100500 раз уже спрашивалось. Заменяй кириллические символы на похожую латиницу. Если лень исправлять блокнотом - могу скинуть war3rainbow, там есть функция автозамены на латин.
Уровень = Уровню героя. Характеристики = Характеристикам героя. Цикл 6-разовый на каждый слот дающий предмет герою. Уровни способностей равные уровню способностей героя. Героя, в смысле твоего героя. Ну еще создать юнита типа твоего героя. Что-то еще? Если он где-то в переменных для пассивок, то с ними тоже по колдовать и все.
Будет только одна проблема, если ты книги атаки на его юзал то их никак не засеч без геморроя. А так все в виде целочисленных на твоем герое записано.
McLaren0109:
Держи, всё работает на ура
851976 - id приказа на отмену тренировки юнита
6 раз - это для того, чтобы когда например: у тебя ограничение в 3 юнита, двоих ты уже построил, потом нажал 7 раз строить пехотинцев, оно строит третьего, четвёртого отменяет, но продолжает строить остальных 5. Итого 6 раз отдаём приказ отмены.
Custom, Никак, HeroAbilityList низя править во время игры, делайте несколько героев с разными наборами скиллов на изучение, а потом морфите.
Как правильно морфить можно найти инфу тут.
Перед морфом желательно убирать все предметы из инвентаря.
Кривоватая подгрузка, удалять не обязательно. Лучше юзать preload без этаких костылей, темболее в JASS есть механизмы автоматического создания pld скриптов.
Таких багов много, почему то оптимизатор берет данные из слк таблиц игры на часть объектов, пробуй wc3ultimate opt, на хайве выложена... Мб кто уже и новый виджитайзер запилил.
» WarCraft 3 / Стандартные способности
» WarCraft 3 / Редактор закрывается после сохранения карты
» WarCraft 3 / Контролировать всех на карте
» WarCraft 3 / Краш
» WarCraft 3 / Мемхак (помощь)
» WarCraft 3 / Округление real переменных
» WarCraft 3 / урон в процентах
» WarCraft 3 / Что выгоднее?
» WarCraft 3 / Вопрос по текстурам земли
» WarCraft 3 / В чем сейчас актуально делать карты?
» WarCraft 3 / Исправление анимации модели
» WarCraft 3 / Переменные и юниты
» StarCraft 2 / Юниты.
» WarCraft 3 / Вопросы по созданию кампании.
» Администрация XGM / Не утверждается проект
» WarCraft 3 / Мультишот
» WarCraft 3 / Мультишот
» WarCraft 3 / Как сделать эту способность триггерами?
» WarCraft 3 / Главное меню
» WarCraft 3 / Описание предмета
» WarCraft 3 / Вопрос по читам Варика
» WarCraft 3 / Ограничение на количество войск и зданий.
» WarCraft 3 / Добавление Abiliti Кто научит заплачу